1. Field of the Invention
This invention relates generally to servo loops. More particularly, the present invention relates to programmable circular buffers for reducing latency in servo loops.
2. Description of the Related Art
Modem disc drive systems typically include a feedback control system called xe2x80x9cservo loopxe2x80x9d that uses feedback to control the position of read/write head. Servo loops are widely used in storage drive systems such as optical disc drive, hard disc drive, floppy disc drive, etc. for focusing and tracking purposes. For example, in an optical drive system, such as CD or DVD, photo-diodes in an optical pick-up unit (OPU) read the laser reflection beam from disc and convert it into photo-currents. The OPU is mounted on a mechanical sled for radial direction movement and houses lasers, photo-detectors, coil current drive electronic circuitry, and the like. The optical disc is clamped on spindle motor and the rotational speed is controlled by a spindle motor servo.
The photo-currents are input to summing or differential amplifiers to generate various signals, such as RF signal, tracing error signal, focus error signal, and so on. These signals are analog in nature and are generally converted into digital format by an Analog-to-Digital converter (ADC) before being input to a Digital Signal Processor (DSP) for processing.
For servo functions, various error signals converted by the ADC will be processed by the DSP to generate responses to maintain the accuracy of focusing, tracking, centering, searching, jumping, tilting, and so on, so that the entire servo system can perform correctly. The responses from the DSP are in digital format and are converted back to analog format by digital-to-analog converters (DAC) before being used by various current drives to perform proper adjustment, such as the height or the angle adjustment for the object lens mounted on the OPU.
A servo loop starts from the laser beam read to the response being feedback for servo parameter adjustment. There are various servo loops for various drives, such as focusing servo loop, tracking servo loop, spindle motor loop, tilt servo loop for optical disc drive, and tracking servo loop for magnetic drive. The timing duration or timing delay from the laser beam read to the adjustment response defines the xe2x80x9clatencyxe2x80x9d of the servo channel.
In general, the performance of a storage drive system improves as the latency decreases. That is, the smaller the latency, the better the servo loop performs. For example, if servo error signals can be monitored or sampled more often, then the disc drive head is less likely to drift substantially from its ideal position. The increase in the servo error signal sampling rate and the reduction in servo response time become more important as the rotational speed of the drive increases and the pitch of storage device decreases.
Typically, low cost servo systems use a single DSP to process all servo error signals in a serial fashion. In such systems, a single high-precision ADC is typically shared by all servo control channels to convert analog servo error signals into digital format. The ADC conversion operations are synchronized with the processor software routine execution associated with the converted digital data.
However, such systems typically exhibit high latency of the servo channel that degrades the performance of the servo system. For example, if the conversion is done too early, the converted data will wait for the DSP to process it. On the other hand, if the conversion is done too late or too slowly, the DSP will be idle waiting for the conversion data to input before a software routine can be invoked.
To reduce latency, one prior art approach has used an interval timer to control the ADC conversion. The interval timer generates a control flag at a fixed timing interval to trigger the ADC to perform data conversion in periodic fashion. In this case, however, the ADC conversion and processor routine execution are not synchronized. For different servo channels, the execution time for different routines are different. Thus, data conversion being triggered at every fixed interval typically does not match varied routine execution time for various servo channels.
In view of the foregoing, there is a need for efficient methods to reduce the servo channel latency so as to improve the analog-to-digital converter utilization rate and the servo performance.
Broadly speaking, the present invention provides a method and a device for sequencing servo channel signals to minimize latency and phase errors. It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable medium. Several inventive embodiments of the present invention are described below.
In one embodiment, the present invention provides a method for processing servo error signals using a programmable circular linked list to minimize latency. The servo error signals are associated with servo channels. In this method, a plurality of data entries are stored in a circular linked list for processing a plurality of servo error signals with one data entry for each servo error channel. Each data entry includes a set of data for processing an associated servo error signal and each set of data includes a time interval that specifies a duration required for processing the associated servo error signal in a digital data format. The time required for converting an analog signal into the digital data format is determined and stored as an ADC conversion time. Then, a data entry is accessed from the circular linked list for processing a servo error signal associated with the data entry. Within the ADC conversion time, the servo error signal is converted into digital data. Upon expiration of the ADC conversion time, the converted digital data is processed to generate correction data. While processing the converted digital data to generate the correction data, a next data entry is accessed from the circular linked list. The servo error signal associated with the next data entry is converted into a next digital data such that the next digital data is generated for generating the next correction data when the previous correction data is generated for output.
In another embodiment, the present invention provides a method for processing servo channel signals using a circular linked list having a plurality of entries for processing a plurality of servo error signals. One entry is provided for each servo error channel. Each entry is programmable to include a set of data for processing a servo error signal. The set of data includes a time interval that specifies a duration needed for processing the digital data corresponding to the associated servo error signal. The servo error signals are associated with servo channels. The method includes: (a) determining and storing a time for converting a servo error signal into a digital data format as an ADC conversion time; (b) receiving a stream of servo error signals over the servo error channels; (c) accessing an entry from the circular linked list for processing a servo error signal associated with the entry; (d) converting the servo error signal into digital data during the ADC conversion time; (e) upon expiration of the ADC conversion time, processing the converted digital data during the time interval specified in the accessed entry to generate correction data at the end of the time interval; and (f) while processing the converted digital data to generate the correction data, accessing a next entry from the circular linked list at one ADC conversion time before the expiration of the time interval associated with the previous entry and converting a servo error signal associated with the next entry into next digital data such that the next digital data is available for processing when the previous correction data is generated for output.
In yet another embodiment, a servo device is provided for sequencing the processing of servo error signals to minimize latency. The servo device includes an analog switch, an ADC, a circular storage device, and sequencing circuitry. The analog switch is configured to receive a stream of servo error signals, each servo error signal being associated with a servo channel and is operable to select a servo channel signal in response to a channel ID. The ADC is coupled to the analog switch to receive the selected servo channel signal and is operable to convert the selected servo channel signal into servo digital data within an ADC conversion time. The circular storage device is configured to store a circular linked list having a plurality of entries for processing the stream of the plurality of servo error signals. One entry is stored for each servo error channel, each entry being programmable to include a set of data for processing a servo error signal. The stored set of data includes a channel ID and a time interval that specifies a duration needed for processing a digital data corresponding to the associated servo error signal. The sequencing circuitry is configured to sequentially access the entries in the circular linked list for selecting servo error signals for ADC conversion and DSP processing. Further, the sequencing circuitry triggers the ADC to read a next channel ID for ADC conversion at one ADC conversion time before the expiration of the time interval for the previous entry.
Advantageously, the method and device of the present invention optimize servo performance by ensuring that the ADC conversions are performed without any wait states. This reduces the conversion delay and improves the timing latency of servo error signals. In addition, such ADC conversions not only reduce the latency of each servo error signal but also improve the utilization rate of the DSP. Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, which illustrate by way of example the principles of the invention.